1. Field
The disclosure relates to a method, system, and article of manufacture for the storage of data in cache and non-volatile media.
2. Background
Storage subsystems, such as the International Business Machines (“IBM”) Enterprise Storage Server*, may receive Input/Output (I/O) requests from one or more hosts directed toward an attached media storage system. The attached media storage system may comprise an enclosure including numerous interconnected disk drives, such as a Direct Access Storage Device (“DASD”), a Redundant Array of Independent Disks (“RAID” Array), Just A Bunch of Disks (“JBOD”), etc.
The storage subsystem may have a cache comprising of one or more gigabytes of volatile storage, e.g., Random Access Memory (RAM), Dynamic Random Access Memory (DRAM), etc. The storage subsystem may store modified data, i.e., write data, in the cache. The cache may need to be scanned periodically, and subsequent to scanning data in the cache may be destaged, i.e., moved or copied, to the disk drives from the cache.
A non-volatile storage that is battery backed may be coupled to the storage subsystem. In the event of a power failure, data that is stored in the cache may be lost, but if the data in the cache is mirrored to the non-volatile storage then the data that was stored in the cache may be retrieved.
A storage subsystem that includes a cache may be referred to as a caching storage controller. Caching storage controllers may adopt different mechanisms to cache write data received from a host. In one mechanism, the host is not notified of write completion until data is written to both the cache and the non-volatile storage. In another mechanism, the non-volatile storage may not be used, and the host is notified of a write completion when the data is written to the cache. While writing to both the cache and the non-volatile storage provides redundant storage of data and may be better from an error recovery perspective, writing data only to the cache may allow for better performance in the storage controller by reducing the number of writes that are performed.